Programming computers is a labor-intensive process, requiring available talented workers, computer power for programming and time for an iterative process of code writing, review/debugging, and editing. Computer programs are written for a variety of purposes, often using similar algorithms and code modules for varied and diverse applications. Moreover, different programs can utilize similar user interfaces for example, allowing for user familiarity and potential reuse of code. However, individual programs often require customization at a level such that general aspects of an algorithm may be reused while specific details vary from implementation to implementation.
In particular, wizards may be used to gather data from users. For example, FIG. 1A illustrates an embodiment of a relationship between a first wizard, a wizard renderer, and an application. The application 110 is linked or coupled to the wizard renderer 120, and may submit a request to the wizard renderer 120. The request may include a specification of what wizard data (the first wizard data 130 for example) to render, and thereby execute the process of the specified wizard data. Wizard renderer 120 may then execute the first wizard data 130, directing it to execute its first or next step until completed, and providing a link to a user interface. Wizard renderer 120 may maintain state for first wizard data 130, for example, and may thus maintain information about what is the next step to execute in first wizard data 130 for example. Wizard renderer 120 may also return the results (data for example) from operation of first wizard data 130 to application 110. Alternatively, application 110 may query objects associated with first wizard data 130 to obtain data accessed, gathered or processed by first wizard 130 data.
Similarly, FIG. 1B illustrates an embodiment of a relationship between a second wizard, a wizard renderer, and an application. Application 110 may request that the wizard renderer 120 operate a second wizard data 140. Wizard renderer 120 may then execute the second wizard data 140, directing it to execute its first or next step until completed, and providing a link to a user interface. Again, wizard renderer 120 may return the results (data for example) from operation of second wizard data 140 to application 110. Similarly, application 110 may query second wizard data 140 to obtain data accessed, gathered or processed by second wizard data 140.
With multiple wizards in existence, it may be useful to reuse these wizards to perform the same functions without requiring reprogramming. Moreover, it may be useful to reuse parts of existing wizards without requiring use or execution of an entire wizard, and without requiring rewriting of the existing wizard to meet the proposed requirements. Essentially, it may be useful to reduce reinvention of the wheel or similar repetition of basic tasks.